<!doctype html>
<html class="no-js" lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>
    
  欢迎使用 MWeb* - 极客凡凡
  
  </title>
  
  
  <link href="atom.xml" rel="alternate" title="极客凡凡" type="application/atom+xml">
    <link rel="stylesheet" href="asset/css/foundation.min.css" />
    <link rel="stylesheet" href="asset/css/docs.css" />
    <script src="asset/js/vendor/modernizr.js"></script>
    <script src="asset/js/vendor/jquery.js"></script>
 
<script type="text/javascript">
  function before_search(){
    var searchVal = 'site:/atom.xml ' + document.getElementById('search_input').value;
    document.getElementById('search_q').value = searchVal;
    return true;
  }
</script>
  </head>
  <body class="antialiased hide-extras">
    
    <div class="marketing off-canvas-wrap" data-offcanvas>
      <div class="inner-wrap">


<nav class="top-bar docs-bar hide-for-small" data-topbar>


  <section class="top-bar-section">
  <div class="row">
      <div style="position: relative;width:100%;"><div style="position: absolute; width:100%;">
        <ul id="main-menu" class="left">
        
        <li id=""><a target="_self" href="index.html">Home</a></li>
        
        <li id=""><a target="_self" href="archives.html">Archives</a></li>
        
        <li id=""><a target="_blank" href="atom.xml">Rss</a></li>
        
        </ul>

        <ul class="right" id="search-wrap">
          <li>
<form target="_blank" onsubmit="return before_search();" action="https://google.com/search" method="get">
    <input type="hidden" id="search_q" name="q" value="" />
    <input tabindex="1" type="search" id="search_input"  placeholder="Search"/>
</form>
</li>
          </ul>
      </div></div>
  </div>
  </section>

</nav>

        <nav class="tab-bar show-for-small">
  <a href="javascript:void(0)" class="left-off-canvas-toggle menu-icon">
    <span> &nbsp; 极客凡凡</span>
  </a>
</nav>

<aside class="left-off-canvas-menu">
      <ul class="off-canvas-list">
        
        <li><a target="_self" href="index.html">Home</a></li>
        
        <li><a target="_self" href="archives.html">Archives</a></li>
        
        <li><a target="_blank" href="atom.xml">Rss</a></li>
        

    <li><label>Categories</label></li>

        
            <li><a href="%E4%B8%AA%E4%BA%BA%E9%9A%8F%E7%AC%94.html">个人随笔</a></li>
         

      </ul>
    </aside>

<a class="exit-off-canvas" href="#"></a>


        <section id="main-content" role="main" class="scroll-container">
        
       

 <script type="text/javascript">
	$(function(){
		var currentURL = '16413830429114.html';
		currentURL = currentURL.substr(0,currentURL.length-5);
		$('#menu_item_'+currentURL).addClass('is_active');
	});
</script>
<div class="row">

    <div id="single-page-wrap">
        <h1>欢迎使用 MWeb*</h1>

        <div class="markdown-body post-page">
        <p>MWeb 是专业的 Markdown 写作、记笔记、静态博客生成软件，目前已支持 Mac，iPad 和 iPhone。MWeb 有以下特色：</p>
<h2><a id="%E8%BD%AF%E4%BB%B6%E6%9C%AC%E8%BA%AB%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>软件本身：</h2>
<ul>
<li>使用原生的 macOS 技术打造，追求与系统的完美结合。</li>
<li>原则上，首先是追求界面简洁和高性能，然后才是强大易用，功能全面。</li>
</ul>
<h2><a id="markdown%E8%AF%AD%E6%B3%95%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>Markdown 语法：</h2>
<ul>
<li>使用 GitHub Flavored Markdown 语法，简称 GFM 语法。</li>
<li>支持表格、TOC、LaTeX、代码块、任务列表、脚注等。</li>
<li>画图库支持 mermaid, viz, ECharts, PlantUML, Sequence, Flow。</li>
</ul>
<h2><a id="markdown%E8%BE%85%E5%8A%A9%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>Markdown 辅助：</h2>
<ul>
<li>支持截图并粘贴、复制并粘贴、拖拽等方式插入图片并直接显示在编辑器内。</li>
<li>在兼容 Markdown 语法的情况下支持设置图片宽度。</li>
<li>好用的表格插入和 LaTeX 书写辅助。</li>
</ul>
<h2><a id="markdown%E8%BE%93%E5%87%BA%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>Markdown 输出：</h2>
<ul>
<li>支持导出为图片、HTML、Epub、PDF、RTF、Docx。</li>
<li>支持发布到 WordPress、支持 Metaweblog API 协议的服务、Wordpress.com、印象笔记（Evernote）、Blogger、Medium、Tumblr、语雀、Ghost、少数派 Matrix。</li>
<li>图片上传服务（图床）支持 Imgur、七牛云、又拍云、腾讯云 COS、阿里云 OSS、SM.MS和自定义的图床服务。</li>
</ul>
<h2><a id="markdown%E7%AC%94%E8%AE%B0%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>Markdown 笔记：</h2>
<ul>
<li>强大的文档库支持分类树和标签管理文档，文档可归类于多个分类，可以把分类整个导出为 Epub、PDF 和生成静态网站。非常合适用于笔记、个人知识收集、管理和输出。</li>
<li>快速笔记：随意增加笔记及图片等素材，支持以天为单位把增加的素材组合在一个文档内，方便整理及记录历史收集情况。</li>
<li>快速搜索：目前已支持全局快捷键调出搜索。</li>
</ul>
<h2><a id="%E5%A4%96%E9%83%A8markdown%E6%96%87%E6%A1%A3%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>外部 Markdown 文档：</h2>
<ul>
<li>外部 Markdown 文档使用外部模式管理。外部模式使用目录树的方式编辑和管理你的 Markdown 文档，还能很好的支持 GitBook、Jekyll、Hexo 等等编辑和图片插入。</li>
</ul>
<h2><a id="mweb%E6%96%87%E6%A1%A3%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>MWeb 文档：</h2>
<p>如果要更详细了解 MWeb，建议你一定要去看一下官网的帮助文档，网址为：<a href="https://zh.mweb.im/help.html">https://zh.mweb.im/help.html</a>。我们建议在使用文档库之前，一定要阅读一下 <a href="https://zh.mweb.im/mweb-library.html">MWeb 文档库详细介绍</a> 这篇文章，以便更好的使用文档库。</p>
<h2><a id="%E5%B8%AE%E5%8A%A9%E6%88%91%E4%BB%AC%E6%94%B9%E8%BF%9Bmweb" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>帮助我们改进 MWeb</h2>
<p>如果你喜欢 MWeb，想让它变得更好，你可以：</p>
<ol>
<li>推荐 MWeb，让更多的人知道。</li>
<li>给我们发反馈和建议：<a href="mailto:coderforart+2333@gmail.com">coderforart+2333@gmail.com</a></li>
<li>在 Mac App Store 上评价 （如果是在 MAS 上购买的话）。</li>
</ol>
<h2><a id="gfm%E8%AF%AD%E6%B3%95%E7%AE%80%E4%BB%8B%E5%92%8C-mweb%E6%89%80%E6%94%AF%E6%8C%81%E7%9A%84%E6%89%A9%E5%B1%95%E8%AF%AD%E6%B3%95" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>GFM 语法简介和 MWeb 所支持的扩展语法</h2>
<h3><a id="%E5%9B%9E%E8%BD%A6%E8%BD%AC%E4%B8%BA%E6%8D%A2%E8%A1%8C" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>回车转为换行</h3>
<p>官方的语法规定结尾加 2 个以上空格加换行才会转成换行，也就是 <code>&lt;br /&gt;</code> 标签。MWeb 中有个选项可以直接把换行转成 <code>&lt;br /&gt;</code>，不用加上 2 个以上空格，这个选项默认是开启的。如果要关闭，请在设置页面关闭。</p>
<h3><a id="%E4%BB%BB%E5%8A%A1%E5%88%97%E8%A1%A8%EF%BC%88task-lists%EF%BC%89" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>任务列表（Task lists）</h3>
<p>Markdown 语法：</p>
<pre class="line-numbers"><code class="language-plain_text">- [ ] 任务一 未做任务 `- + 空格 + [ ]`
- [x] 任务二 已做任务 `- + 空格 + [x]`
</code></pre>
<p>效果如下：</p>
<ul>
<li class="task-list-item"><input type="checkbox" disabled="" /> 任务一 未做任务 <code>- + 空格 + [ ]</code></li>
<li class="task-list-item"><input type="checkbox" checked="" disabled="" /> 任务二 已做任务 <code>- + 空格 + [x]</code></li>
</ul>
<h3><a id="%E5%9B%BE%E7%89%87%E5%A4%A7%E5%B0%8F%E5%8F%8A%E5%AF%B9%E9%BD%90" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>图片大小及对齐</h3>
<p>官方和 GFM 都不支持图片大小设置，MWeb 引入的特别的语法来设置图片宽度。如：<code>![图片说明-w450](pic.jpg)</code> 这样表示设置图片宽度为 450。其中 -w450 为设置语法，生成 HTML 时会自动移除。w 表示设置宽度。 可以看出，MWeb 引入的语法的特点是兼容原来的语法和仅支持设置宽度。</p>
<p><img src="https://zh.mweb.im/asset/img/set-up-git.gif" alt="图片描述" style="width:140px;" /></p>
<h3><a id="%E5%A4%9A%E8%A1%8C%E6%88%96%E8%80%85%E4%B8%80%E6%AE%B5%E4%BB%A3%E7%A0%81" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>多行或者一段代码</h3>
<p>Markdown 语法：</p>
<pre class="line-numbers"><code class="language-plain_text">```js
function fancyAlert(arg) {
  if(arg) {
    $.facebox({div:'#foo'})
  }

}
```
</code></pre>
<p>效果如下：</p>
<pre class="line-numbers"><code class="language-js">function fancyAlert(arg) {
	if(arg) {
		$.facebox({div:'#foo'})
	}

}
</code></pre>
<p>这个语法目前在 MWeb 中使用，必须前后空一行，才会正确解析。我觉得，在写 Markdown 文档过程中，运用空行很有必要，基本上，块级元素（标题、列表、引用、代码块、表格、段落等），都建议前后空一行。</p>
<h3><a id="%E8%A1%A8%E6%A0%BC" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>表格</h3>
<p>Markdown 语法：</p>
<pre class="line-numbers"><code class="language-plain_text">第一格表头 | 第二格表头
--------- | -------------
内容单元格 第一列第一格 | 内容单元格第二列第一格
内容单元格 第一列第二格 多加文字 | 内容单元格第二列第二格
</code></pre>
<p>效果如下：</p>
<table>
<thead>
<tr>
<th>第一格表头</th>
<th>第二格表头</th>
</tr>
</thead>
<tbody>
<tr>
<td>内容单元格 第一列第一格</td>
<td>内容单元格第二列第一格</td>
</tr>
<tr>
<td>内容单元格 第一列第二格 多加文字</td>
<td>内容单元格第二列第二格</td>
</tr>
</tbody>
</table>
<h3><a id="%E5%88%A0%E9%99%A4%E7%BA%BF" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>删除线</h3>
<p>Markdown 语法：</p>
<pre class="line-numbers"><code class="language-plain_text">加删除线像这样用： ~~删除这些~~
</code></pre>
<p>效果如下：</p>
<p>加删除线像这样用： <del>删除这些</del></p>
<h3><a id="latex" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>LaTeX</h3>
<p>Markdown 语法：</p>
<pre class="line-numbers"><code class="language-plain_text">块级公式：
```math
x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a}
```

行内公式： ``\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N``
</code></pre>
<p>效果如下（在设置页面中启用 LaTeX 才会看到效果）：</p>
<p>块级公式：</p>
\[x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a}
\]
<p>行内公式： \(\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N\)</p>
<p>注意：为了兼容 MWeb 3，也支持 \(\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N\)<br />
和块级语法</p>
\[	x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} 
\]
<p>但是建议用新的语法。</p>
<h2><a id="mweb%E7%94%BB%E5%9B%BE" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>MWeb 画图</h2>
<h3><a id="mermaid" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>mermaid</h3>
<p>mermaid 是比较流行的画图库，它支持流程图、顺序图和甘特图，它的官网为：<a href="https://mermaidjs.github.io/">https://mermaidjs.github.io/</a> ，在 MWeb 中使用 mermaid 的语法就是声明代码块的语言为 mermaid，代码块中再写上 mermaid 的画图语法即可，你可以把下面的语法复制到 MWeb 中查看效果。</p>
<pre class="line-numbers"><code class="language-plain_text">```mermaid
sequenceDiagram
    participant Alice
    participant Bob
    Alice-&gt;John: Hello John, how are you?
    loop Healthcheck
        John-&gt;John: Fight against hypochondria
    end
    Note right of John: Rational thoughts &lt;br/&gt;prevail...
    John--&gt;Alice: Great!
    John-&gt;Bob: How about you?
    Bob--&gt;John: Jolly good!
```
</code></pre>
<p><strong>效果如下：</strong></p>
<pre class="line-numbers"><code class="language-mermaid">sequenceDiagram
    participant Alice
    participant Bob
    Alice-&gt;John: Hello John, how are you?
    loop Healthcheck
        John-&gt;John: Fight against hypochondria
    end
    Note right of John: Rational thoughts &lt;br/&gt;prevail...
    John--&gt;Alice: Great!
    John-&gt;Bob: How about you?
    Bob--&gt;John: Jolly good!
</code></pre>
<h3><a id="echarts" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>echarts</h3>
<p>echarts 是百度出品的 js 画图库，它的网址为：<a href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org/zh/index.html</a>，功能非常强大，MWeb 支持 echarts 的一些基本的用法，太高级的不支持。你可以将以下语法复制到 MWeb 中进行尝试。你也可以去 <a href="https://echarts.apache.org/examples/zh/index.html">https://echarts.apache.org/examples/zh/index.html</a> 这个网址查看一些例子，要注意的是 MWeb 只能解析 <code>option = {}</code> 这种简单的，不过应该是足够使用了。</p>
<pre class="line-numbers"><code class="language-plain_text">```echarts
option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};
```
</code></pre>
<p><strong>效果如下：</strong></p>
<pre class="line-numbers"><code class="language-echarts">option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line'
    }]
};
</code></pre>
<h3><a id="%E8%84%9A%E6%B3%A8%EF%BC%88footnote%EF%BC%89" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>脚注（Footnote）</h3>
<p>Markdown 语法：</p>
<pre class="line-numbers"><code class="language-plain_text">这是一个脚注：[^1]
</code></pre>
<p>效果如下：</p>
<p>这是一个脚注：<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup></p>
<h3><a id="%E6%B3%A8%E9%87%8A%E5%92%8C%E9%98%85%E8%AF%BB%E6%9B%B4%E5%A4%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>注释和阅读更多</h3>
<!-- comment -->
<span id="more"></span><!-- more -->
<p><strong>注</strong> 阅读更多的功能只用在文档库生成静态网站或发布到 Wordpress 博客时，插入时注意要后空一行。</p>
<section class="footnotes">
<ol>
<li id="fn1">
<p>这里是脚注信息 <a href="#fnref1" class="footnote-backref">↩</a></p>
</li>
</ol>
</section>

        </div>
    </div>
</div>              
 <div class="page-bottom clearfix">
  <div class="row">
   <p class="copyright">Copyright &copy; 2022
Powered by <a target="_blank" href="http://www.mweb.im">MWeb</a>,&nbsp; 
Theme used <a target="_blank" href="http://github.com">GitHub CSS</a>.</p>
  </div>
</div>

        </section>
      </div>
    </div>



<script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">MathJax.Hub.Config({TeX: { equationNumbers: { autoNumber: "AMS" } }});</script>

  






	<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.2.2/echarts.min.js"></script>



  	<script>!function(){var deflate=function(){var e,n,r,t,i,o,a,f,d,l,c,u,h,w,m,s,g,p,y,_,v,x,A,C,b,V,E,z,I,S,B,G,L,M,O,D,N,q,T,k,H,U,j,F,P,R,J,K,Q,W,X,Y,Z,$,ee,ne,re=32768,te=0,ie=1,oe=2,ae=6,fe=!0,de=32768,le=64,ce=8192,ue=2*re,he=3,we=258,me=16,se=8192,ge=se,pe=8192,ye=pe-1,_e=re-1,ve=0,xe=4096,Ae=we+he+1,Ce=re-Ae,be=1,Ve=15,Ee=7,ze=29,Ie=256,Se=256,Be=Ie+1+ze,Ge=30,Le=19,Me=16,Oe=17,De=18,Ne=2*Be+1,qe=parseInt((13+he-1)/he),Te=null;function ke(){this.fc=0,this.dl=0}function He(){this.dyn_tree=null,this.static_tree=null,this.extra_bits=null,this.extra_base=0,this.elems=0,this.max_length=0,this.max_code=0}function Ue(e,n,r,t){this.good_length=e,this.max_lazy=n,this.nice_length=r,this.max_chain=t}var je=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Fe=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Pe=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Re=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Je=[new Ue(0,0,0,0),new Ue(4,4,8,4),new Ue(4,5,16,8),new Ue(4,6,32,32),new Ue(4,4,16,16),new Ue(8,16,32,32),new Ue(8,16,128,128),new Ue(8,32,128,256),new Ue(32,128,258,1024),new Ue(32,258,258,4096)];function Ke(){var n;return null!=e?(n=e,e=e.next):n=new function(){this.next=null,this.len=0,this.ptr=new Array(ce),this.off=0},n.next=null,n.len=n.off=0,n}function Qe(e){return c[re+e]}function We(e,n){return c[re+e]=n}function Xe(e){Te[o+i++]=e,o+i==ce&&function(){if(0!=i){var e,t;for(e=Ke(),null==n?n=r=e:r=r.next=e,e.len=i-o,t=0;t<e.len;t++)e.ptr[t]=Te[o+t];i=o=0}}()}function Ye(e){e&=65535,o+i<ce-2?(Te[o+i++]=255&e,Te[o+i++]=e>>>8):(Xe(255&e),Xe(e>>>8))}function Ze(){m=(m<<qe^255&f[v+he-1])&ye,s=Qe(m),c[v&_e]=s,We(m,v)}function $e(e,n){_n(n[e].fc,n[e].dl)}function en(e){return 255&(e<256?F[e]:F[256+(e>>7)])}function nn(e,n,r){return e[n].fc<e[r].fc||e[n].fc==e[r].fc&&U[n]<=U[r]}function rn(e,n,r){var t;for(t=0;t<r&&ne<ee.length;t++)e[n+t]=255&ee.charCodeAt(ne++);return t}function tn(e){var n,r,t=b,i=v,o=_,a=v>Ce?v-Ce:ve,d=v+we,l=f[i+o-1],u=f[i+o];_>=z&&(t>>=2);do{if(f[(n=e)+o]==u&&f[n+o-1]==l&&f[n]==f[i]&&f[++n]==f[i+1]){i+=2,n++;do{}while(f[++i]==f[++n]&&f[++i]==f[++n]&&f[++i]==f[++n]&&f[++i]==f[++n]&&f[++i]==f[++n]&&f[++i]==f[++n]&&f[++i]==f[++n]&&f[++i]==f[++n]&&i<d);if(r=we-(d-i),i=d-we,r>o){if(x=e,o=r,fe){if(r>=we)break}else if(r>=I)break;l=f[i+o-1],u=f[i+o]}}}while((e=c[e&_e])>a&&0!=--t);return o}function on(){var e,n,r=ue-C-v;if(-1==r)r--;else if(v>=re+Ce){for(e=0;e<re;e++)f[e]=f[e+re];for(x-=re,v-=re,w-=re,e=0;e<pe;e++)We(e,(n=Qe(e))>=re?n-re:ve);for(e=0;e<re;e++)n=c[e],c[e]=n>=re?n-re:ve;r+=re}A||((e=rn(f,v+C,r))<=0?A=!0:C+=e)}function an(){A||(u=0,h=0,function(){var e,n,r,t,i;if(0!=L[0].dl)return;for(O.dyn_tree=S,O.static_tree=G,O.extra_bits=je,O.extra_base=Ie+1,O.elems=Be,O.max_length=Ve,O.max_code=0,D.dyn_tree=B,D.static_tree=L,D.extra_bits=Fe,D.extra_base=0,D.elems=Ge,D.max_length=Ve,D.max_code=0,N.dyn_tree=M,N.static_tree=null,N.extra_bits=Pe,N.extra_base=0,N.elems=Le,N.max_length=Ee,N.max_code=0,r=0,t=0;t<ze-1;t++)for(P[t]=r,e=0;e<1<<je[t];e++)j[r++]=t;for(j[r-1]=t,i=0,t=0;t<16;t++)for(R[t]=i,e=0;e<1<<Fe[t];e++)F[i++]=t;for(i>>=7;t<Ge;t++)for(R[t]=i<<7,e=0;e<1<<Fe[t]-7;e++)F[256+i++]=t;for(n=0;n<=Ve;n++)q[n]=0;e=0;for(;e<=143;)G[e++].dl=8,q[8]++;for(;e<=255;)G[e++].dl=9,q[9]++;for(;e<=279;)G[e++].dl=7,q[7]++;for(;e<=287;)G[e++].dl=8,q[8]++;for(un(G,Be+1),e=0;e<Ge;e++)L[e].dl=5,L[e].fc=vn(e,5);ln()}(),function(){var e;for(e=0;e<pe;e++)c[re+e]=0;if(V=Je[E].max_lazy,z=Je[E].good_length,fe||(I=Je[E].nice_length),b=Je[E].max_chain,v=0,w=0,(C=rn(f,0,2*re))<=0)return A=!0,void(C=0);for(A=!1;C<Ae&&!A;)on();for(m=0,e=0;e<he-1;e++)m=(m<<qe^255&f[e])&ye}(),n=null,i=0,o=0,E<=3?(_=he-1,y=0):(y=he-1,p=0),a=!1)}function fn(e,r,i){var o;return t||(an(),t=!0,0!=C)?(o=dn(e,r,i))==i?i:a?o:(E<=3?function(){for(;0!=C&&null==n;){var e;if(Ze(),s!=ve&&v-s<=Ce&&(y=tn(s))>C&&(y=C),y>=he)if(e=gn(v-x,y-he),C-=y,y<=V){y--;do{v++,Ze()}while(0!=--y);v++}else v+=y,y=0,m=((m=255&f[v])<<qe^255&f[v+1])&ye;else e=gn(0,255&f[v]),C--,v++;for(e&&(sn(0),w=v);C<Ae&&!A;)on()}}():function(){for(;0!=C&&null==n;){if(Ze(),_=y,g=x,y=he-1,s!=ve&&_<V&&v-s<=Ce&&((y=tn(s))>C&&(y=C),y==he&&v-x>xe&&y--),_>=he&&y<=_){var e;e=gn(v-1-g,_-he),C-=_-1,_-=2;do{v++,Ze()}while(0!=--_);p=0,y=he-1,v++,e&&(sn(0),w=v)}else 0!=p?(gn(0,255&f[v-1])&&(sn(0),w=v),v++,C--):(p=1,v++,C--);for(;C<Ae&&!A;)on()}}(),0==C&&(0!=p&&gn(0,255&f[v-1]),sn(1),a=!0),o+dn(e,o+r,i-o)):(a=!0,0)}function dn(r,t,a){var f,d,l,c;for(f=0;null!=n&&f<a;){for((d=a-f)>n.len&&(d=n.len),l=0;l<d;l++)r[t+f+l]=n.ptr[n.off+l];var u;if(n.off+=d,n.len-=d,f+=d,0==n.len)u=n,n=n.next,(c=u).next=e,e=c}if(f==a)return f;if(o<i){for((d=a-f)>i-o&&(d=i-o),l=0;l<d;l++)r[t+f+l]=Te[o+l];f+=d,i==(o+=d)&&(i=o=0)}return f}function ln(){var e;for(e=0;e<Be;e++)S[e].fc=0;for(e=0;e<Ge;e++)B[e].fc=0;for(e=0;e<Le;e++)M[e].fc=0;S[Se].fc=1,Z=$=0,K=Q=W=0,X=0,Y=1}function cn(e,n){for(var r=T[n],t=n<<1;t<=k&&(t<k&&nn(e,T[t+1],T[t])&&t++,!nn(e,r,T[t]));)T[n]=T[t],n=t,t<<=1;T[n]=r}function un(e,n){var r,t,i=new Array(Ve+1),o=0;for(r=1;r<=Ve;r++)o=o+q[r-1]<<1,i[r]=o;for(t=0;t<=n;t++){var a=e[t].dl;0!=a&&(e[t].fc=vn(i[a]++,a))}}function hn(e){var n,r,t=e.dyn_tree,i=e.static_tree,o=e.elems,a=-1,f=o;for(k=0,H=Ne,n=0;n<o;n++)0!=t[n].fc?(T[++k]=a=n,U[n]=0):t[n].dl=0;for(;k<2;){var d=T[++k]=a<2?++a:0;t[d].fc=1,U[d]=0,Z--,null!=i&&($-=i[d].dl)}for(e.max_code=a,n=k>>1;n>=1;n--)cn(t,n);do{n=T[be],T[be]=T[k--],cn(t,be),r=T[be],T[--H]=n,T[--H]=r,t[f].fc=t[n].fc+t[r].fc,U[n]>U[r]+1?U[f]=U[n]:U[f]=U[r]+1,t[n].dl=t[r].dl=f,T[be]=f++,cn(t,be)}while(k>=2);T[--H]=T[be],function(e){var n,r,t,i,o,a,f=e.dyn_tree,d=e.extra_bits,l=e.extra_base,c=e.max_code,u=e.max_length,h=e.static_tree,w=0;for(i=0;i<=Ve;i++)q[i]=0;for(f[T[H]].dl=0,n=H+1;n<Ne;n++)(i=f[f[r=T[n]].dl].dl+1)>u&&(i=u,w++),f[r].dl=i,r>c||(q[i]++,o=0,r>=l&&(o=d[r-l]),a=f[r].fc,Z+=a*(i+o),null!=h&&($+=a*(h[r].dl+o)));if(0!=w){do{for(i=u-1;0==q[i];)i--;q[i]--,q[i+1]+=2,q[u]--,w-=2}while(w>0);for(i=u;0!=i;i--)for(r=q[i];0!=r;)(t=T[--n])>c||(f[t].dl!=i&&(Z+=(i-f[t].dl)*f[t].fc,f[t].fc=i),r--)}}(e),un(t,a)}function wn(e,n){var r,t,i=-1,o=e[0].dl,a=0,f=7,d=4;for(0==o&&(f=138,d=3),e[n+1].dl=65535,r=0;r<=n;r++)t=o,o=e[r+1].dl,++a<f&&t==o||(a<d?M[t].fc+=a:0!=t?(t!=i&&M[t].fc++,M[Me].fc++):a<=10?M[Oe].fc++:M[De].fc++,a=0,i=t,0==o?(f=138,d=3):t==o?(f=6,d=3):(f=7,d=4))}function mn(e,n){var r,t,i=-1,o=e[0].dl,a=0,f=7,d=4;for(0==o&&(f=138,d=3),r=0;r<=n;r++)if(t=o,o=e[r+1].dl,!(++a<f&&t==o)){if(a<d)do{$e(t,M)}while(0!=--a);else 0!=t?(t!=i&&($e(t,M),a--),$e(Me,M),_n(a-3,2)):a<=10?($e(Oe,M),_n(a-3,3)):($e(De,M),_n(a-11,7));a=0,i=t,0==o?(f=138,d=3):t==o?(f=6,d=3):(f=7,d=4)}}function sn(e){var n,r,t,i,o;if(i=v-w,J[W]=X,hn(O),hn(D),t=function(){var e;for(wn(S,O.max_code),wn(B,D.max_code),hn(N),e=Le-1;e>=3&&0==M[Re[e]].dl;e--);return Z+=3*(e+1)+5+5+4,e}(),(r=$+3+7>>3)<=(n=Z+3+7>>3)&&(n=r),i+4<=n&&w>=0)for(_n((te<<1)+e,3),xn(),Ye(i),Ye(~i),o=0;o<i;o++)Xe(f[w+o]);else r==n?(_n((ie<<1)+e,3),pn(G,L)):(_n((oe<<1)+e,3),function(e,n,r){var t;for(_n(e-257,5),_n(n-1,5),_n(r-4,4),t=0;t<r;t++)_n(M[Re[t]].dl,3);mn(S,e-1),mn(B,n-1)}(O.max_code+1,D.max_code+1,t+1),pn(S,B));ln(),0!=e&&xn()}function gn(e,n){if(l[K++]=n,0==e?S[n].fc++:(e--,S[j[n]+Ie+1].fc++,B[en(e)].fc++,d[Q++]=e,X|=Y),Y<<=1,0==(7&K)&&(J[W++]=X,X=0,Y=1),E>2&&0==(4095&K)){var r,t=8*K,i=v-w;for(r=0;r<Ge;r++)t+=B[r].fc*(5+Fe[r]);if(t>>=3,Q<parseInt(K/2)&&t<parseInt(i/2))return!0}return K==se-1||Q==ge}function pn(e,n){var r,t,i,o,a=0,f=0,c=0,u=0;if(0!=K)do{0==(7&a)&&(u=J[c++]),t=255&l[a++],0==(1&u)?$e(t,e):($e((i=j[t])+Ie+1,e),0!=(o=je[i])&&_n(t-=P[i],o),$e(i=en(r=d[f++]),n),0!=(o=Fe[i])&&_n(r-=R[i],o)),u>>=1}while(a<K);$e(Se,e)}var yn=16;function _n(e,n){h>yn-n?(Ye(u|=e<<h),u=e>>yn-h,h+=n-yn):(u|=e<<h,h+=n)}function vn(e,n){var r=0;do{r|=1&e,e>>=1,r<<=1}while(--n>0);return r>>1}function xn(){h>8?Ye(u):h>0&&Xe(u),u=0,h=0}return function(i,o){var a,u;ee=i,ne=0,void 0===o&&(o=ae),function(i){var o;if(i?i<1?i=1:i>9&&(i=9):i=ae,E=i,t=!1,A=!1,null==Te){for(e=n=r=null,Te=new Array(ce),f=new Array(ue),d=new Array(ge),l=new Array(de+le),c=new Array(1<<me),S=new Array(Ne),o=0;o<Ne;o++)S[o]=new ke;for(B=new Array(2*Ge+1),o=0;o<2*Ge+1;o++)B[o]=new ke;for(G=new Array(Be+2),o=0;o<Be+2;o++)G[o]=new ke;for(L=new Array(Ge),o=0;o<Ge;o++)L[o]=new ke;for(M=new Array(2*Le+1),o=0;o<2*Le+1;o++)M[o]=new ke;O=new He,D=new He,N=new He,q=new Array(Ve+1),T=new Array(2*Be+1),U=new Array(2*Be+1),j=new Array(we-he+1),F=new Array(512),P=new Array(ze),R=new Array(Ge),J=new Array(parseInt(se/8))}}(o);for(var h=new Array(1024),w=[];(a=fn(h,0,h.length))>0;){var m=new Array(a);for(u=0;u<a;u++)m[u]=String.fromCharCode(h[u]);w[w.length]=m.join("")}return ee=null,w.join("")}}();function encode64(e){for(r="",i=0;i<e.length;i+=3)i+2==e.length?r+=append3bytes(e.charCodeAt(i),e.charCodeAt(i+1),0):i+1==e.length?r+=append3bytes(e.charCodeAt(i),0,0):r+=append3bytes(e.charCodeAt(i),e.charCodeAt(i+1),e.charCodeAt(i+2));return r}function append3bytes(e,n,t){return c1=e>>2,c2=(3&e)<<4|n>>4,c3=(15&n)<<2|t>>6,c4=63&t,r="",r+=encode6bit(63&c1),r+=encode6bit(63&c2),r+=encode6bit(63&c3),r+=encode6bit(63&c4),r}function encode6bit(e){return e<10?String.fromCharCode(48+e):(e-=10)<26?String.fromCharCode(65+e):(e-=26)<26?String.fromCharCode(97+e):0==(e-=26)?"-":1==e?"_":"?"}function insertAfter(e,n){e.parentNode.insertBefore(n,e.nextSibling)}var mwebChartEleId="mweb-chart-ele-",glNumber=0;function drawOldSeq(e,n){Diagram.parse(n).drawSVG(e,{theme:"simple"})}function drawOldFlow(e,n){flowchart.parse(n).drawSVG(e)}function drawMermaid(e,n){var r=document.getElementById(e);r.className="mermaid",r.innerHTML=n}function drawPlantUML(e,n){var r=document.getElementById(e),t=unescape(encodeURIComponent(n)),i="https://www.plantuml.com/plantuml/svg/"+encode64(deflate(t,9));r.innerHTML='<a target="_blank" href="'+i+'"><img src="'+i+'" /></a>'}function drawViz_circo(e,n){(new Viz).renderSVGElement(n,{engine:"circo"}).then(function(n){document.getElementById(e).appendChild(n)})}function drawViz_dot(e,n){(new Viz).renderSVGElement(n,{engine:"dot"}).then(function(n){document.getElementById(e).appendChild(n)})}function drawViz_fdp(e,n){(new Viz).renderSVGElement(n,{engine:"fdp"}).then(function(n){document.getElementById(e).appendChild(n)})}function drawViz_neato(e,n){(new Viz).renderSVGElement(n,{engine:"neato"}).then(function(n){document.getElementById(e).appendChild(n)})}function drawViz_osage(e,n){(new Viz).renderSVGElement(n,{engine:"osage"}).then(function(n){document.getElementById(e).appendChild(n)})}function drawViz_twopi(e,n){(new Viz).renderSVGElement(n,{engine:"twopi"}).then(function(n){document.getElementById(e).appendChild(n)})}function drawECharts(eleIID,txt){var ele=document.getElementById(eleIID);try{eval(txt);var myoption=option;myoption.animation=!1,void 0!==myoption.width?ele.style.width=myoption.width+10+"px":ele.style.width="100%",void 0!==myoption.height?ele.style.height=myoption.height+10+"px":ele.style.height="350px";var myChart=echarts.init(ele);myChart.setOption(myoption)}catch(e){}}var init=function(){var e=[[".language-plantuml",drawPlantUML]];"undefined"!=typeof Diagram&&e.push([".language-sequence",drawOldSeq]),"undefined"!=typeof flowchart&&e.push([".language-flow",drawOldFlow]),"undefined"!=typeof mermaid&&e.push([".language-mermaid",drawMermaid]),"undefined"!=typeof Viz&&(e.push([".language-circo",drawViz_circo]),e.push([".language-dot",drawViz_dot]),e.push([".language-fdp",drawViz_fdp]),e.push([".language-neato",drawViz_neato]),e.push([".language-osage",drawViz_osage]),e.push([".language-twopi",drawViz_twopi])),"undefined"!=typeof echarts&&e.push([".language-echarts",drawECharts]);for(var n=0;n<e.length;n++)for(var r=e[n][0],t=e[n][1],i=document.querySelectorAll(r),o=0;o<i.length;o++){var a=i[o],f=a.innerText||a.textContent;a=a.parentElement;var d=document.createElement("div"),l=mwebChartEleId+glNumber;glNumber++,d.innerHTML='<div id="'+l+'"></div>',insertAfter(a,d),a.parentElement.removeChild(a),t(l,f)}"undefined"!=typeof mermaid&&mermaid.initialize({startOnLoad:!0})};document.addEventListener("DOMContentLoaded",function(e){init()})}();</script>



	<link rel="stylesheet" type="text/css" href="https://cdn.bootcdn.net/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css" />
	<script src="https://cdn.bootcdn.net/ajax/libs/mermaid/8.13.8/mermaid.min.js"></script>




<script src="asset/prism.js"></script>


<style type="text/css">
figure{margin: 0;padding: 0;}
figcaption{text-align:center;}

/* PrismJS 1.14.0
 http://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
 * prism.js default theme for JavaScript, CSS and HTML
 * Based on dabblet (http://dabblet.com)
 * @author Lea Verou
 */

code[class*="language-"],
pre[class*="language-"] {
    color: black;
    background: none;
    text-shadow: 0 1px white;
    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
    text-align: left;
    white-space: pre;
    word-spacing: normal;
    word-break: normal;
    word-wrap: normal;
    line-height: 1.5;
    
    -moz-tab-size: 4;
    -o-tab-size: 4;
    tab-size: 4;
    
    -webkit-hyphens: none;
    -moz-hyphens: none;
    -ms-hyphens: none;
    hyphens: none;
}

pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
    text-shadow: none;
    background:#b3d4fc;
}

pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
    text-shadow: none;
    background: #b3d4fc;
}

@media print {
    code[class*="language-"],
    pre[class*="language-"] {
        text-shadow: none;
    }
}

/* Code blocks */
pre[class*="language-"] {
    padding: 1em;
    margin: .5em 0;
    overflow: auto;
}

:not(pre) > code[class*="language-"],
pre[class*="language-"] {
    background: #F7F7F7;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
    padding: .1em;
    border-radius: .3em;
    white-space: normal;
}

.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
    color: slategray;
}

.token.punctuation {
    color: #999;
}

.namespace {
    opacity: .7;
}

.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
    color: #905;
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
    color: #690;
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
    color: #9a6e3a;
    background: hsla(0, 0%, 100%, .5);
}

.token.atrule,
.token.attr-value,
.token.keyword {
    color: #07a;
}

.token.function,
.token.class-name {
    color: #DD4A68;
}

.token.regex,
.token.important,
.token.variable {
    color: #e90;
}

.token.important,
.token.bold {
    font-weight: bold;
}
.token.italic {
    font-style: italic;
}

.token.entity {
    cursor: help;
}


pre[class*="language-"].line-numbers {
    position: relative;
    padding-left: 3.8em;
    counter-reset: linenumber;
}

pre[class*="language-"].line-numbers > code {
    position: relative;
    white-space: inherit;
}

.line-numbers .line-numbers-rows {
    position: absolute;
    pointer-events: none;
    top: 0;
    font-size: 100%;
    left: -3.8em;
    width: 3em; /* works for line-numbers below 1000 lines */
    letter-spacing: -1px;
    border-right: 1px solid #999;

    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;

}

    .line-numbers-rows > span {
        pointer-events: none;
        display: block;
        counter-increment: linenumber;
    }

        .line-numbers-rows > span:before {
            content: counter(linenumber);
            color: #999;
            display: block;
            padding-right: 0.8em;
            text-align: right;
        }

</style>

  
    

    <script src="asset/js/foundation.min.js"></script>
    <script>
      $(document).foundation();
      function fixSidebarHeight(){
        var w1 = $('.markdown-body').height();
          var w2 = $('#sidebar').height();
          if (w1 > w2) { $('#sidebar').height(w1); };
      }
      $(function(){
        fixSidebarHeight();
      })
      $(window).load(function(){
          fixSidebarHeight();
      });
     
    </script>



  </body>
</html>
